package com.ptrprograms.animations.activity;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import com.ptrprograms.animations.R;
/**
* Created by paulruiz on 8/18/14.
*/
public class CircularRevealActivity extends Activity {
private ImageView mImageView;
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView( R.layout.activity_circular_reveal);
mImageView = (ImageView) findViewById( R.id.image );
mButton = (Button) findViewById( R.id.button );
mButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
if( mImageView.getVisibility() == View.VISIBLE ) {
hideImageCircular();
} else {
revealImageCircular();
}
}
});
}
private void hideImageCircular() {
int x = getX();
int y = getY();
int radius = getRadius();
ValueAnimator anim =
ViewAnimationUtils.createCircularReveal(mImageView, x, y, radius, 0);
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
mImageView.setVisibility( View.INVISIBLE );
}
});
anim.start();
}
private void revealImageCircular() {
int x = getX();
int y = getY();
int radius = getRadius();
ValueAnimator anim =
ViewAnimationUtils.createCircularReveal(mImageView, x, y, 0, radius);
anim.setDuration( 1000 );
anim.addListener( new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
mImageView.setVisibility( View.VISIBLE );
}
});
anim.start();
}
private int getX() {
return ( mImageView.getLeft() + mImageView.getRight() ) / 2;
}
private int getY() {
return ( mImageView.getTop() + mImageView.getBottom() ) / 2;
}
private int getRadius() {
return mImageView.getWidth();
}
}